/**
 * 冒泡排序的实现原理:
 *  两两相邻元素进行比较,那么何为冒泡呢？我们可以想有象一堆泡泡，
 *  大泡泡会浮到小泡泡上方。最后，最大的泡泡浮到最上面，最小的泡
 *  泡沉在最底下，每个泡泡都会找到合适的位置，这就是“冒泡”。
 *  冒泡: 我们的冒泡排序如果抽象成这样的泡泡，就是最大的泡泡浮到
 *  最上面，然后第二大的泡泡浮到最大的泡泡下面，以此类推。当每个
 *  “泡泡”都经历一次“冒泡”后，这一堆泡泡就会井然有序。
 */
#include <stdio.h>

static void bubble_sort(int *arr, int size)
{
    int i, j;
    int tmp;

    for (i = 0; i < size -1; i++) {
        for (j = 0; j < size-1-i; j++) {
            if (arr[j] > arr[j+1]) {
                tmp = arr[j];
                arr[j] = arr[j+1];
                arr[j+1] = tmp;
            }
        }
    }

    for (i = 0; i < size; i++)
        printf("%d ", arr[i]);

    printf("\n");
}

int arr[10] = {1, 4, 5, 6, 8, 11, 45, 8, 10, 10};

int main (int argc, char **argv)
{

    bubble_sort(arr, 10);
    return 0;
}